package com.aaa.qy127.service;

import com.aaa.qy127.entity.Book;
import com.aaa.qy127.util.CodeAndMsg;
import com.aaa.qy127.util.Result;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.MalformedParameterizedTypeException;
import java.util.List;
import java.util.Map;

public interface BookService {

    /**
     * 查询全部的业务
     * @param book
     * @return
     */
    Result selBook(Book book);

    /**
     * 修改 状态
     * 如果修改成功 返回 1001
     * 如果修改失败 返回 1002
     * @param bookid
     * @param status
     * @return
     */
    CodeAndMsg updStatus(Integer bookid, Integer status);

    /**
     * 修改 和 添加 的操作
     * @param book
     * @return
     */
    CodeAndMsg updAndInsBook(Book book);

    /**
     * 通过 bookid 查询所有的 该 book的图片 并 发送的前端
     * @param bookid
     * @return
     */
    List<Map<String, Object>> getImgByBookId(String bookid);

    /**
     * 通过 url 删除 书籍图片， 如果该书籍图片的路径和 book 表中的一致，则 把 book表中的也修改掉
     * @param url
     * @return
     */
    CodeAndMsg deleteBookUrl(String url);

    /**
     * 用新上传的 url 路径 把 之前的 url 路径 替换掉
     * 如果这个url 和 book表中的 路径相同 就把 book表和book_tp表中的url都替换了
     * 如果这个url 和book表中的路径不同 就只需要 更换 book_tp表中的url 就可以了
     * @param urlNew
     * @param urlOld
     * @return
     */
    CodeAndMsg updateBookUrl(String urlNew,String urlOld);

    /**
     * 查询所有的书籍的名字 和 id 通过 typeid 查询 书籍的名字 和 id
     * @return
     */
    List<Map<String,Object>> selectBookNameAndBookid(String typeid);

    /**
     * 通过 bookid 查询 这个书籍的 出版社
     * @param bookid
     * @return
     */
    List<Map<String,Object>> selectPublisherAndBookid(String bookid);

    /**
     * 获取到 所有的 书籍的信息
     * @return
     */
    List<Map<String, Object>> getAllBook(HttpServletRequest request);

    /**
     * 获取所有的 类型的 信息
     * @return
     */
    List<Map<String,Object>> showTyid(HttpServletRequest request);

    /**
     * 通过 bookid 获取 该 书籍的 所有的图片
     * @param bookid
     * @return
     */
    CodeAndMsg showBookByBookid(String bookid,HttpServletRequest request);

    /**
     * 通过 typid 查询出 该 类型的 书籍 的 信息
     * @param typeid
     * @param request
     * @return
     */
    List<Map<String, Object>> showBookBytypeid(String typeid,HttpServletRequest request);

    /**
     * 按照 bookname 模糊查询
     * @param bookname
     */
    List<Map<String,Object>> selectSomeBookBybookname(String bookname,HttpServletRequest request);
}
